#!/bin/bash

source /etc/profile

# 函数：获取格式化当前日期（仅日期部分，格式：YYYY-MM-DD）
get_current_date() {
    date +"%Y-%m-%d"  # 输出系统当前日期，格式严格为YYYY-MM-DD
}

# 函数：校验日期格式是否合法（格式：YYYY-MM-DD）
is_valid_date() {
    local date_str=$1
    # 正则表达式：匹配YYYY-MM-DD格式（允许月份/日期为1-2位数字）
    if [[ $date_str =~ ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ ]]; then
        # 进一步用date命令校验日期合法性（如2025-02-30会被判定为非法）
        if date -d "$date_str" >/dev/null 2>&1; then
            return 0  # 合法
        else
            return 1  # 非法（如2025-02-30）
        fi
    else
        return 1  # 格式不匹配
    fi
}

# 设置默认日期为当前日期
DEFAULT_DATETIME=$(get_current_date)

# 解析命令行参数（-t指定日期）
while getopts ":t:" opt; do
    case $opt in
        t)
            if [ "$OPTARG" = "now" ]; then
                USER_DATETIME=$(get_current_date)
            else
                USER_DATETIME="$OPTARG"  # 获取用户输入的日期参数
            fi
            ;;
        \?)
            echo "无效选项：-$OPTARG" >&2
            echo "用法：$0 [-t YYYY-MM-DD|now]" >&2
            exit 1
            ;;
        :)
            echo "选项 -$OPTARG 需要一个参数." >&2
            echo "用法：$0 [-t YYYY-MM-DD|now]" >&2
            exit 1
            ;;
    esac
done

# 确定最终使用的日期：优先使用用户输入的日期，否则使用默认日期
if [ -n "$USER_DATETIME" ]; then
    FINAL_DATETIME=$USER_DATETIME
else
    FINAL_DATETIME=$DEFAULT_DATETIME
fi

# 校验最终日期的合法性（若用户输入了日期，需再次校验）
if [ -n "$USER_DATETIME" ] && ! is_valid_date "$FINAL_DATETIME"; then
    echo "错误：输入的日期格式不合法，请按照YYYY-MM-DD格式输入（例如：2025-09-10）" >&2
    exit 1
fi

# 输出最终使用的日期（用于调试，crontab中可注释掉）
echo "最终使用的日期：$FINAL_DATETIME"



# 调用curl命令（将日期中的空格替换为%20，适配URL参数）
curl "http://127.0.0.1:50110/admin/index/increment?date=${FINAL_DATETIME// /%20}"

